yjx.service('webimHandler',['$rootScope','ipCookie','$locals','messageHandler','$timeout',function($rootScope,ipCookie,$locals,messageHandler,$timeout){
    return{
        //处理消息（私聊(包括普通消息和全员推送消息)，普通群(非直播聊天室)消息）
        handlderMsg: function(msg) {
            var fromAccount, fromAccountNick, sessType, subType, contentHtml;

            fromAccount = msg.getFromAccount();
            if (!fromAccount) {
                fromAccount = '';
            }
            fromAccountNick = msg.getFromAccountNick();
            if (!fromAccountNick) {
                fromAccountNick = fromAccount;
            }

            //解析消息
            //获取会话类型
            //webim.SESSION_TYPE.GROUP-群聊，
            //webim.SESSION_TYPE.C2C-私聊，
            sessType = msg.getSession().type();
            //获取消息子类型
            //会话类型为群聊时，子类型为：webim.GROUP_MSG_SUB_TYPE
            //会话类型为私聊时，子类型为：webim.C2C_MSG_SUB_TYPE
            subType = msg.getSubType();

            switch (sessType) {
                case webim.SESSION_TYPE.C2C://私聊消息
                    switch (subType) {
                        case webim.C2C_MSG_SUB_TYPE.COMMON://c2c普通消息
                            //业务可以根据发送者帐号fromAccount是否为app管理员帐号，来判断c2c消息是否为全员推送消息，还是普通好友消息
                            //或者业务在发送全员推送消息时，发送自定义类型(webim.MSG_ELEMENT_TYPE.CUSTOM,即TIMCustomElem)的消息，在里面增加一个字段来标识消息是否为推送消息
                            contentHtml = convertMsgtoHtml(msg);
                         var  html =   contentHtml.replace(/&lt;/g,'<').replace(/&quot;/g,"'").replace(/&gt;/g,'>')
                            webim.Log.warn('receive a new c2c msg: fromAccountNick=' + fromAccountNick + ", content=" + html);
                            var opts = {
                                'To_Account': fromAccount,//好友帐号
                                'LastedMsgTime': msg.getTime()//消息时间戳
                            };
                            webim.c2CMsgReaded(opts);//c2c消息一定要调用已读上报接口
                            //console.error('收到一条c2c消息(好友消息或者全员推送消息): 发送人=' + fromAccountNick + ", 内容=" + html);
                            if(!$rootScope.messageListShow.length > 0){
                                //$rootScope.messageListShow.push($scope.message);
                                $rootScope.messageListShow = messageHandler.getCurMessageAllContent($rootScope.messageList,$rootScope.service );
                            }
                            var message = {
                                from:fromAccount,
                                text:html,
                                to:$rootScope.userId,
                            };

                            var user = {
                                userId:fromAccount,
                                headPicture:$rootScope.service.avatar,
                                nickName:$rootScope.service.nickname,
                                unread:0,
                            }
                           $timeout(function(){
                                messageHandler.addToMessageList(message,user);
                                messageHandler.addToLocal(message,user);
                            })

                            break;
                    }
                    break;
                case webim.SESSION_TYPE.GROUP://普通群消息，对于直播聊天室场景，不需要作处理
                    break;
            }
        },

    }
    //把消息转换成Html
    function convertMsgtoHtml(msg) {
        var html = "", elems, elem, type, content;
        elems = msg.getElems();//获取消息包含的元素数组
        for (var i in elems) {
            elem = elems[i];
            type = elem.getType();//获取元素类型
            content = elem.getContent();//获取元素对象
            switch (type) {
                case webim.MSG_ELEMENT_TYPE.TEXT:
                    html += convertTextMsgToHtml(content);
                    //html += content;
                    break;
                default:
                    webim.Log.error('未知消息元素类型: elemType=' + type);
                    break;
            }
        }
        return webim.Tool.formatHtml2Text(html);
    }


    //解析文本消息元素
    function convertTextMsgToHtml(content) {
        return content.getText();
    }




}])